回顾·机器学习如何在业务上落地?
本文根据数美科技李田老师在DataFun AI+ Talk中分享的《机器学习在数美业务上的落地》编辑整理而成。
今天分享的内容有数美科技在机器学习领域用到的技术以及落地应用碰到的一些问题,落地应用和paper上面区别很大,有时限于工程问题会对其进行功能上的改进或者是一些妥协。首先讲机器学习三大领域,然后介绍数美业务中数美天信、数美天网、数美天净业务中用到的机器学习方法和所做的一些妥协。
机器学习分为三大领域,首先是监督学习,主要应用场景有分类场景和评分场景。在业务中有很多业务需求,如需要对一个人行为进行评分来判断是否拦截。数美业务有:天信 - 可信度评分,天网 - 客户评分/广告行为分,天净 - 涉政、涉黄、涉恐、涉暴的内容识别与拦截。数美各项业务中常见的算法有逻辑回归、决策树,以及当下比较流行的xgboost,分类场景的大杀器,各项kaggle比赛的宠儿,大量应用于生产实践上。还有就是一些深度学习算法,如DNN、CNN,以及与序列学习相关的RNN。
第二个领域就是无监督学习,这在反欺诈中是比较重要的技术。很多时候跟黑产对抗的时候,黑产变化我们也得变化,但是反欺诈的成本远远高于黑产的成本,因此很难用监督学习的方法跟上黑产的脚步。异常点监测、离群分析、关联挖掘提供了一种更好的非人工方式,正常人在互联网里无论是社交行为还是购买行为、对话等有自己的一个passion,黑产有一种不同于正常人的行为,是很罕见、奇怪的做法,可以通过技术将其抓取出来。主要的业务有反欺诈、反作弊,最基础的聚类算法,在各项聚类中作为baseline——K-means,目前业内较为流行的发现异常/离群簇算法,且不会对簇形状有要求——DBSCAN,还有Iforest是高效的异常点发掘算法,将数据用一棵树来表针,还能区分哪些叶子节点算异常节点哪些不算。
第三个领域是增强学习,目前还没有太多应用,目前比较流行的算法有Q-learning及其各项衍生、MCTS 蒙特卡洛树搜索、RHGA滚动遗传算法。这几类算法有一个约束就是它需要一个playreview,游戏AI、自动驾驶、智能机器人的playreview是很好定义的。游戏怎么玩都是知道,自动驾驶的目标、使用范围都是可以抽象的。但是如果用在反欺诈、漏洞分析就会存在局限性,如何将过程变为程序可理解,以及过程中存在很多随机性行为导致很难去学习。
接下来讲三个领域具体在数美业务中的落地,首先是数美天信。数美天信本质是用多方数据为人进行信用背书,激励人在社会上各个方面构建良好的信用记录,并使之成为人的信用资本。可信度的架构如上图所示,将数据提供方提供的数据进行结构化,有一种方法将所有提供方的数据结构放入多方来源结构数据表,然后进行统计策略上分析,或者监督学习的方法进行模型制定,将策略和模型进行线上部署,当客户对一个人进行查询时通过选择模型策略对用户进行信用评估。原先评分卡做法就是IOE、WOE、AR等,我们有所保留有所突破,也会用同样的方法来判断对目标的贡献,也有自己的模式做这些东西。
传统模式评分卡分为三步做特征、选特征、训模型,做特征主要是某段时间你干了什么事,某一类事情干了多少次。然后进入选特征,尽量将特征做的少一点、简单一点便于可控,主要特征有IP、WOE、行为数据等,还有依据Xgboost生成树的节点选择特征。最后依据选出的特征做模型。做特征是一个开放的过程,你需要去猜测那些特征可能对我们的评分有贡献,然后在选特征时测试那些对我们实际有用的特征。由于这个过程人的介入太多了,所以采用序列化模式做这些事情。构造这个人的事件序列,如金融中一个例子,你先注册、申请、批款,将这种以序列的方式进行模型训练,就不用考虑那么多特征,还有一些其他优点,如部署方面的优点,后续会介绍到。
这两种方法可能会训练多个模型,会有很多分到底给哪个是一个问题。一般情况会融合一下给一个分,具体操作有两点原则,第一点来源不同的数据一般不统一训练模型,因为数据不同源本来就会对数据就会有一个约束,如APP上数据本来就有前置约束,有一个数据分布约束,而普通方式采集数据是没有分布约束的,分布数据会在训练时对某些数据有优待或忽视,就会体现在某些特征上。举个例子如覆盖率,一个源覆盖率是10%,另一个是80%,两个源的数据放在一起训练,无论第一个源特征如何好会因为覆盖率直接被干掉。第二个就是源特质导致本身特征强弱,判断一个人有没有逾期在批款是一个很重要的事情,这种数据很少,大多拿到的是申请的数据,这个时候模型出来不能说申请的特征强。我们希望多源都能对模型进行单独训练得到的分再用自策略或stacking进行同步调整,这样每个源带来的信息都能在最终分里体现。
多模型融合的目标第一个就是融合多个模型的结果,使结果更为全面可信。不同模型有不同的特质,部分模型可能更倾向于召回,部分模型可能更倾向于准确,融合能集多家之长。第二个就是融合多源的结果,提高覆盖率。采取stacking的方法,让模型覆盖率突破单一源的覆盖率到多源最大覆盖率。这种方式不仅能融合多种模型效果,还能将源的特征带过来,对于两个源交叉部分判断更为准确,非交叉部分继承对应单模型的效果。
多模型融合方法,第一个就是从策略上进行融合,第二种就是stacking多模型融合。结果更加稳健,在各大比赛及具体应用上均被证明有较好的效果,在多源融合的时候,将不同模型出来的结果统一到一个量纲上。在客户使用方面一种是直接拿分,有些客户希望将分作为一个子feature进入上层模型。第二种是需要准确率、召回率自己把控。有的用户是直接拿结果,直接用该分数对应的结果对客户进行判断,简单明了。
接下来介绍下数美天网的客户分/广告行为分,希望通过行为上的数据对客户进行评分。实现方法就是有一个行为计算器,来一个事件计算一个得分,风险是一个逐渐累加的过程,但是评分会越来越稳定。
优点有很多:
(1)计算量小,可线上实时计算。每有一个event事件就更新一次,不用存储事件。
(2)存储空间小,不需要线下存储。
(3)部署简单,只需要对线上event事件接收那里接一个脚本写RNNcell。
(4)人工介入少,因为其为事件纬度,所以特征只需要对事件本身负责,无需太多特征工程,相较于传统的评分模式,该方法只需要线下训完RNN参数后即可上线,无需人工去分析各种case,各种调试加减分等。
几点注意,主要涉及到算法上的妥协:
(1)正常RNN对与样本event长短有定式要求,所以这里需要一个假设:线下训练用一个较长的事件长度,来近似无限长度,一般是100、1000、1500等。
(2)第二个就是很难在RNN这一点做一个妥协,不同人的在相同位置的事件并不代表同一时间的事件,且不同人的前后两次事件在时间域上也不相同。如一个人可能在事件2和3间隔一秒,另一个人可能在前天上午间隔10分钟,但是在RNN期望这个是一样的,解决方法需要从特征层面为模型提供一个参照点。
(3)由于线下有padding过程,而线上并无padding,因此在线下会有bias累加,而在线上没有bias累加,所以需要RNNcell丢掉bias。
第三个讲一下数美天网—反欺诈,反欺诈主要是反部分人通过一些策略薅羊毛、钻空子。目前业内的通用做法还是分析case,人工做策略,算算术,卡阈值。反欺诈本来是一个黑白对抗的过程,依据历史badcase分析得出策略、阈值滞后于欺诈。我们目前探索采用无监督的方式自动发现异常用户,采用诸DBSCAN,iForest等方法对海量的客户数据进行自动化分析,尽可能节省人的介入和成本。
实际过程采用多维维护,这里有两种更为高效,人工介入更少。一种是SiftScience,一种是Datavisor,SiftScience属于传统机器学习中监督学习的范畴,解决方案是双模型+Live Machine Learning模式,利用通用模型收缩问题的target,对召回的部分会采用特化模型Live Machine Learning实现线上自学习。第二种就是DataVisor,该公司主打的是无监督学习,类DT自动化选择策略,相互互补、相互验证,为客户提供建议。数美方面结合这两者,会有全局/特化监督学习模型,或策略,精确定位欺诈行为及用户,涉及RNN或者策略分析将问题找到。同时会用非监督学习方法探测可能存在的潜在异常行为,这种潜在异常行为可能是判断异常爆发的行为。如黑产先注册一百个账户等有需求自动激活,但是可以通过无监督的方法抓取。
接下来讲一下数美天净的娇喘识别,主要识别语音中存在的一些异常行为,为客户提供涉黄音频拦截服务。主要做法将音频流、音频URL、音频文件作为一个音频输入,然后通过模型中的特征工程去判别,作为一个多模型输出,最后通过策略或者多模型融合给用户提供一个综合判定结果。
目前这个领域用的比较多的特征有MFCC、Pitch(音高音)、iVector(语音信息),一般会将这类特征作为模型输入特征。主流音频分类方案: HMM/GMM、 DNN、RNN,RNN序列化,一帧帧分析形成MFCC,感官上也比较符合逻辑。RNN比GMM参数多,用的相对少一点,利用IVector加逻辑回归就能得到一个比较好的结果。
最后讲一下数美接下来的一些算法探索,可以将Reinforcement Learning模型融合到业务中来。在一些具体场景下,具备场景漏洞(支付,薅羊毛等欺诈行为),在游戏领域概率更高,在某猫你有时也可以做到零成本买到一些东西;第二个问题就是该类欺诈行为符合马尔科夫决策过程,即未来取决于当前。然后就是正常用户行为更加随机,如可能逛某宝或者其他东西,行为比较随机。综上所述,如果采取合适的reward可以让机器自动寻找可能的犯案路径,或者可以利用reward体现欺诈程度。但是这个涉及几个比较大的限制,一个是playreview的设计,第二个就是ruleconstraver设计。这代表着如何让程序理解目前所代表的场景以及用户推展这些活动的规则,目前基于这个做的有GVGEI,是一个游戏解释器,拥有自己的一套规则和语法。还有就是将历史文献中游戏转化为真实可玩的游戏,将文字转化为程序实体,然后利用Reinforcement Learning自己去玩,看历史描述方法对不对,如果回合较少或者不公平就说明历史描述存在偏差。
还有就是Reinforcement Learning的落地应用需要大量基础算法,因为它其实是一个不断试错的过程,需要不断试错和reward,计算量比较大。
作者介绍:
李田,数美科技机器学习与深度学习工程师。研究生毕业于英国埃塞克斯大学大数据及文本分析专业,荣获最高等评价distinction 硕士学位。主要方向为自然语言、计算机图像以及游戏领域的增强学习、内容生成等。在数美负责金融信贷、广告导流及音频拦截的数据分析和模型构建。
——END——
加管理员微信:674228854,进知识图谱专业群(需审核)
内推信息:如下方向:广告算法、图像算法、推荐算法、反作弊算法,对数美科技感兴趣的同学欢迎投递,邮箱:shumei-hr@ishumei.com。
文章没看够?下面还有: